2012年02月02日
川俣晶の縁側ソフトウェア技術雑記 total 6156 count

続・C系言語で、a = b = 123;といった複数対象への値の代入を積極的に肯定すべきか?

Written By: 川俣 晶連絡先

Subject: C系言語で、a = b = 123;といった複数対象への値の代入を積極的に肯定すべきか?

Keyword: 【▲→川俣晶の縁側→ソフトウェア→技術雑記】

URL: http://mag.autumn.org/Content.modf?id=20050707181234

名前:

メールアドレス:

本文:

a.prop1 = a.prop2 = ちょっと負担の重い式;

となっていますが、

演算の順番を考慮すると

a.prop2 = a.prop1 = ちょっと負担の重い式;

では無いかと思ったので投稿しました。

「また来たよ。一切名乗らない無礼な人」

「仮名すら名乗らないのは、それが良くない行為だってことが分かってないのかな?」

「分かってないだろ。分かってないのがネットの常識」

「ネットの常識は世間の非常識ってことか」

「そうだな」

「では指摘の問題はどう解釈すべきなの?」

「代入の順番を意識すると正しいことを言っているようにも思えるが、文章の趣旨からするとそうとも断言できない」

「なぜ?」

「この文章のテーマは、2つのプロパティに同じ値を入れる方法だ。等価な式の書き換えではない」

「もっとかみ砕いて説明してくれよ」

「だからさ。プロパティの実装に副作用が無い場合、a=b=cとb=a=cの結果は等価なんだ。その場合、実はb=a=cとは書きたくない」

「どうして?」

「見た目が美しくないからね。同じなら順番に文字が並ぶa=b=cの方がいい」

「もしも、副作用があったら?」

「あったら別の書き方をしていただろう」

「それは空気でよめということ?」

「そうじゃない。以下のように書いてあるだろ?」

ついさっき、C#で2つのプロパティに同じ値を設定するコードを書くことになったのですが、これをスマートに重複無くシンプルに書き切る方法を探していました。

「どういうこと?」

「実際のコードで書くことを前提に話をしているんだ。書いて意図した機能が実現出来たからこの文章はある。だから空気なんて読む必要は無い。文章を読めば、この時点の書き手のニーズはこれで満たされていることが分かる」

「じゃあ、無礼君のニーズは満たされないが、君のニーズは満たされていたんだね」

「いや、無礼君のニーズも満たされていたんだよ」

「えっ?」

「本を書いている偉そうな川俣氏の欠陥を指摘できる僕ってもっと賢い、という満足感が得られた」

「ぎゃふん」

感想 §

「しかし、もう興味も無い古い問題にコメントされてもな。積極的に答えるのもぜんぜん意欲が沸かない」

「日付を見れば2005年だよね。古いよね」

「完全に忘れていた話だ」